Можно ли в Go сделать поле в структуре кастомного типа?

Например:

  1. Есть структура с полем типа int:
type Channel struct {
    Chan  int `json:"chan"`
}
  1. Есть структура с полем типа string:
type Channel struct {
    Chan  string `json:"chan"`
}

Как можно сделать что-то подобное:

type Channel struct {
    Chan  CustomType `json:"chan"`
}

Какие в принципе есть варианты такое реализовать?


Ответы (2 шт):

Автор решения: Nik

Обьявление типа UserId. Тип UserId = int64

type UserId int64

Обьявление типа UserInfo.

type UserInfo struct {
    id UserId
    name string
    password string
}

Обьявление типа UsersInfo.

type UsersInfo struct {
    users []UserInfo
    createdAt time.Time
}
→ Ссылка
Автор решения: Ayaz

Можно попробовать так

package main

import (
    "fmt"
    "reflect"
)

type Test struct {
    data interface{}
}

func Test2(data interface{}) {
    switch reflect.TypeOf(data).Kind() {
    case reflect.String:
        fmt.Println("строка")
    case reflect.Int:
        fmt.Println("инт")
    }
}

func main() {
    str := "Hello world"
    number := 34
    test := Test{}
    test.data = str
    Test2(test.data)
    test.data = number
    Test2(test.data)
}
→ Ссылка