2014-07-04 31 views

回答

4

map[string]interface{}不是與map[string]string相同。類型interface{}string類型不一樣。

如果它們都map[string]string

package main 

import "fmt" 

func main() { 
    v := map[string]string{"hello": "world"} 
    checkCast(v) 

} 

func checkCast(v interface{}) { 
    _, isCorrectType := v.(map[string]string) 
    if !isCorrectType { 
     fmt.Printf("incorrect type") 
     return 
    } 
} 

輸出:

[no output] 

聲明v.(map[string]string)是一種說法,不是一個演員。

The Go Programming Language Specification

Type assertions

對於接口類型的表達式x和類型T,主 表達

x.(T) 

斷言x不是nil並且存儲的值在x是 類型T。符號x.(T)被稱爲類型斷言。


Go有轉換。

The Go Programming Language Specification

Conversions

換算的形式爲T(x)其中T是一種類型和 x是可被轉換爲類型T表達式的表達式。

+0

有沒有辦法在Go中投射? – Karan

+1

@Karan:看我修改後的答案。 Go有轉換。 – peterSO

相關問題