Open3

Type Sets Proposal 勉強会用メモ

syumaisyumai

Type Parametersを手元で動かす方法

go install golang.org/dl/gotip@latest
gotip download # masterをdownloadしてくれる
GOEXPERIMENT=unified gotip run main.go

Go 1.17でも一部動くらしい

https://twitter.com/tenntenn/status/1419270564586278918?s=20

動かしたコード

package main

import (
	"fmt"
	"strconv"
)

type SignedInt interface {
	~int | ~int8 | ~int16 | ~int32 | ~int64
}

type Stringer interface {
	String() string
}

type SignedIntStringer interface {
	SignedInt
	Stringer
}

type I int

func (i I) String() string {
	return strconv.Itoa(int(i))
}

func print[T SignedIntStringer](s []T) {
	for _, v := range s {
		fmt.Println(v)
	}
}

func main() {
	print([]I{1, 2, 3})
}