generics json에 이름 없는 걸 끼워넣고 싶어요.

6369 단어 Gotech

generics의 무명을 매립할 수 없습니다.


1.18, 기다렸던generics가 드디어 왔다.
나는 개인적으로 매우 편리하고 좋다고 생각한다.
그러나 현황struct을 jsonmarshal으로 바꿀 때 나는 그 계층에서 전개할 수 없다는 것을 깨달았다.
이거 안 돼.
bad.go
type umekomi[T any] struct {
    Name string
    T
}
이것 괜찮아요?
type gene[T any] struct {
    Name string
    Extra T
}
예를 들면 다음과 같은 것이 json이다.
sample.go
type ext struct {
    Age int
    BornAt time.Time
}

var bornThisWay = gene[ext]{
    Name: "Gaga",
    Extra: ext{
        Age: 0,
        BornAt: time.Now(),
    },
}
이렇게 된 느낌.
{
  "Name": "Gaga",
  "Extra": {
    "Age": 0,
    "BornAt": "****"
  }
}
같은 차원으로 발전하고 싶어요.
또한 앞에서 구조체를 정의할 때 이걸로 정의하면 문제없지만 다른 곳의 API를 끌어올릴 때generics판의 무명삽입을 원합니다.

프로포즈를 한번 내봤어요.


goo에 벌원숭이를 올려봤어요.
https://github.com/golang/go/issues/52138
죄송합니다. 제가 영어를 잘해요.충동적인 움직임으로 2분 만에 쓴 영어는 마치 우뚝 솟은 똥과 같다.
첫 번째 긴장proposal & 첫 번째PR결과는...dup 순간 종료로 판단😭
우리 측의 의도가 전달됐는지 모르겠지만 그래도 되죠.
예법을 지키지 않아 혼난 것 같지만 그래도 영어를 아는 마음으로 한다.
주제 밖의 말:
테스트는 농담이잖아...
왜 이렇게 됐을까😰

포기하지 않을 거예요.


이런 거 했어요.
https://github.com/maru44/gson
사용법
package main

import (
    "fmt"

    "github.com/maru44/gson"
)

type good[T any] struct {
    Name string
    Free T `json:"..."`
}

type more struct {
    Age int
    Country string
}

func main() {
    got := good[more]{}
    in := `{"Name": "Foo", "Age": 20, "Country": "U.S.A"}`

    _ = gson.Unmarshal([]byte(in), got)
}

이렇게 하면...
good[more]{
    Name: "Foo",
    more: more{
        Age: 20,
        Country: "U.S.A",
    },
}
이런 느낌이 돌아왔어요.
반대로 해도 역시 그렇다.
!
코드를 보면 알 수 있듯이 완전히 encoding/json의 표절이다. 인용, 경의, 재건(고탑찬가풍)으로 이해할 수 있다면 좋겠다.

좋은 웹페이지 즐겨찾기