汎用性が高い関数で具体的な型を受け取りたい
ユーティリティや横断的関心事を処理するような関数の引数の型はプリミティブ型になりやすい
func buildMessage(msg string) string
しかしながら引数には具体的な型がくる場合も多い
そういったケースでは、~ 演算子を利用してジェネリック型の引数に制約を与えることができる
func buildMessage[T ~string](msg T) string
これで引数には具体的な型、例えば type SomeTypeString string が来たとしても受け取ることができる