Go - Assignments

Tuple Assignment

Type Assertion
Need use interface{} to declare a variable
Check concrete type by v,ok := x.(T) 
If type "T" can't be assigned by x, will panic
Type Assertion
package main
import (
       "fmt"
)
type Name string
func main() {
       var x interface{} = "dsa"
       v, ok := x.(string)
       fmt.Printf("v:%s, ok:%t\n", v, ok)
       var y interface{} = Name("aaa")
       v, ok = y.(string)
       fmt.Printf("v:%s, ok:%t\n", v, ok)
       // panic
       //     v, ok = y.(float64)
       //     fmt.Printf("v:%s, ok:%t\n", v, ok)
}

Output
v:dsa, ok:true
v:, ok:false
Type Assertion Panic
package main
import (
       "fmt"
)
type Name string
func main() {
       var x interface{} = "dsa"
       v, ok := x.(string)
       fmt.Printf("v:%s, ok:%t\n", v, ok)
       var y interface{} = Name("aaa")
       v, ok = y.(string)
       fmt.Printf("v:%s, ok:%t\n", v, ok)
       // panic
       //     v, ok = y.(float64)
       //     fmt.Printf("v:%s, ok:%t\n", v, ok)
}
Output
************  Building Go project: TestGo  ************
  with GOPATH: C:\Users\isaac.liao\Go;C:\Users\isaac.liao\eclipse-workspace\TestGo
>> Running: C:\Go\bin\go.exe install -v -gcflags "-N -l" declaration
declaration
# declaration
declaration\variables.go:19:8: cannot assign float64 to v (type string) in  multiple assignment
   ^^^ Terminated, exit code: 2 ^^^
************  Build terminated.  ************

Assignability
Only an assignable value can be assigned to a variable
Only assignable variable can be compared to another variable

package main
import (
       "fmt"
)
type Name string
func main() {
       y := "y"
       x2 := "x"
       //     x := Name("x") //panic
       //     y2 := Name("y") //panic
       //     fmt.Printf("%t\n", x == x2) //panic
       //     fmt.Printf("%t\n", x == y)  //panic
       //     fmt.Printf("%t\n", y == x)  //panic
       fmt.Printf("%t\n", y == x2)
       fmt.Printf("%t\n", y == y)
}
Panic




沒有留言:

張貼留言

別名演算法 Alias Method

 題目 每個伺服器支援不同的 TPM (transaction per minute) 當 request 來的時候, 系統需要馬上根據 TPM 的能力隨機找到一個適合的 server. 雖然稱為 "隨機", 但還是需要有 TPM 作為權重. 解法 別名演算法...