はじめに
go言語でintefaceを使えば、C言語などのポインタ渡しに似た処理を行うことができます。
そのやり方について、覚書の意味で記載します。
ソースコード
本資料では、入力した構造体の型別で別の処理を行うように関数を作ってプログラムをします。
また、行列にした構造体で複数にわたって異なる構造体が入っていた時の処理別方法についても関数で作ってみます。
maing.go
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string
Age string
Sex string
}
type User2 struct {
Name string
Age string
Sex string
}
type TextBord struct {
Name string
Text string
}
//個別処理
func Output(v interface{}) {
switch reflect.TypeOf(v) {
case reflect.TypeOf(User{}):
fmt.Println("Userの型")
case reflect.TypeOf(User2{}):
fmt.Println("User2の型")
case reflect.TypeOf(TextBord{}):
fmt.Println("TextBordの型")
default:
fmt.Println("Other")
}
}
//配列処理
func Outputs(v []interface{}) {
for _, tmp := range v {
Output(tmp)
}
}
func main() {
Output(User{})
Output(User2{})
Output(TextBord{})
var tmp []interface{}
tmp = append(tmp, int(0))
tmp = append(tmp, User2{})
tmp = append(tmp, User{})
Outputs(tmp)
}
実行する以下の結果が得られます。
Userの型
User2の型
TextBordの型
Other
User2の型
Userの型