Goタイプ変換と断言のまとめ
2458 ワード
標準タイプ変換
タイプ名を関数名、変換された値をパラメータとします.スパンの小さい変換に使用します.
stringとint
int => string
string => int
stringとfloat
float 64回転文字列
パラメータの意味は、フォーマット、小数点以下の桁数の保持、満たすタイプ(32または64)です.
2番目のパラメータ(フォーマット)は、b e E f g Gのうちの1つがそれぞれ異なるフォーマットに対応するように限定される.フォーマットと結果は次のとおりです.
义齿
interfaceの処理
オブジェクト向けの思考では,ほとんどのタイプがinterfaceのサブクラスとして理解できる.しかし、サブクラスメソッドを呼び出すにはinterfaceを特定のサブクラスに変換する必要があります.
interfaceのタイプ変換方式は特殊です
失敗するとpanicエラーが報告されると直接断言します
だから断言する前に判断を加えることができます
switchと結合
タイプ名を関数名、変換された値をパラメータとします.スパンの小さい変換に使用します.
//[]byte string
b := []byte{'a','b','c'}
str := string(b)
b = []byte(str)
//int int64 int32
var x int = 0x123456789
y := int32(a)
z := int64(a)
x = int(y)
stringとint
int => string
//int => string
d := 12345
s := strconv.Itoa(d)
//int64 => string
var d64 int64 = 12345
s := strconv.FormatInt(d64, 10) //
// int32 string , int32 int64
var d32 int32 = 12345
s = strconv.FormatInt(int64(d32), 10)
string => int
//string => int
s := "12345"
d := strconv.Atoi(s)
//string => int64
d64,err := strconv.ParseInt(s, 10, 64)
// 2 , 1 int :0 int 8 int8 32 int32
// int64
strconv.ParseInt("123", 16, 8)
は誤りを報告し、int 8を満たすことを要求するため、16進法の数は最大2桁しか与えられない.stringとfloat
float 64回転文字列
var f64 float64 = 1232323232.3456323232
strconv.FormatFloat(f64, 'f', 3, 64)
パラメータの意味は、フォーマット、小数点以下の桁数の保持、満たすタイプ(32または64)です.
2番目のパラメータ(フォーマット)は、b e E f g Gのうちの1つがそれぞれ異なるフォーマットに対応するように限定される.フォーマットと結果は次のとおりです.
b
5168738262720215p-22 e
1.232e+09 E
1.232E+09 f
12323232.3346有四舍五入g
1.23e+09 G
1.23E+09 义齿
s := "12345.6789"
strconv.ParseFloat(s, 64)
// float32 float64
interfaceの処理
オブジェクト向けの思考では,ほとんどのタイプがinterfaceのサブクラスとして理解できる.しかし、サブクラスメソッドを呼び出すにはinterfaceを特定のサブクラスに変換する必要があります.
interfaceのタイプ変換方式は特殊です
var a interface{} = "xxxxx"
s := a.(string) //
失敗するとpanicエラーが報告されると直接断言します
var a interface{} = "xxxxx"
s := a.(int)// panic
だから断言する前に判断を加えることができます
var i interface{} = "ssss"
str, ok := i.(int)
if !ok {
fmt.Println("is not int")
} else {
fmt.Println(str)
}
switchと結合
var i interface{} = "sssss"
switch i.(type){
case "int":
fmt.Println("it's int")
case "string":
fmt.Println("it's string")
default:
fmt.Println("unknown type")
}
}
.(type)
変数のタイプを直接反射することができる.しかもswitchと組み合わせてしか使用できません.