| // run |
| |
| // Copyright 2009 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // Test interfaces on basic types. |
| |
| package main |
| |
| type myint int |
| type mystring string |
| type I0 interface{} |
| |
| func f() { |
| var ia, ib I0 |
| var i myint |
| var s mystring |
| |
| if ia != ib { |
| panic("1") |
| } |
| |
| i = 1 |
| ia = i |
| ib = i |
| if ia != ib { |
| panic("2") |
| } |
| if ia == nil { |
| panic("3") |
| } |
| |
| i = 2 |
| ia = i |
| if ia == ib { |
| panic("4") |
| } |
| |
| ia = nil |
| if ia == ib { |
| panic("5") |
| } |
| |
| ib = nil |
| if ia != ib { |
| panic("6") |
| } |
| |
| if ia != nil { |
| panic("7") |
| } |
| |
| s = "abc" |
| ia = s |
| ib = nil |
| if ia == ib { |
| panic("8") |
| } |
| |
| s = "def" |
| ib = s |
| if ia == ib { |
| panic("9") |
| } |
| |
| s = "abc" |
| ib = s |
| if ia != ib { |
| panic("a") |
| } |
| } |
| |
| func main() { |
| var ia [20]I0 |
| var b bool |
| var s string |
| var i8 int8 |
| var i16 int16 |
| var i32 int32 |
| var i64 int64 |
| var u8 uint8 |
| var u16 uint16 |
| var u32 uint32 |
| var u64 uint64 |
| |
| f() |
| |
| ia[0] = "xxx" |
| ia[1] = 12345 |
| ia[2] = true |
| |
| s = "now is" |
| ia[3] = s |
| b = false |
| ia[4] = b |
| |
| i8 = 29 |
| ia[5] = i8 |
| i16 = 994 |
| ia[6] = i16 |
| i32 = 3434 |
| ia[7] = i32 |
| i64 = 1234567 |
| ia[8] = i64 |
| |
| u8 = 12 |
| ia[9] = u8 |
| u16 = 799 |
| ia[10] = u16 |
| u32 = 4455 |
| ia[11] = u32 |
| u64 = 765432 |
| ia[12] = u64 |
| |
| s = ia[0].(string) |
| if s != "xxx" { |
| println(0, s) |
| panic("fail") |
| } |
| i32 = int32(ia[1].(int)) |
| if i32 != 12345 { |
| println(1, i32) |
| panic("fail") |
| } |
| b = ia[2].(bool) |
| if b != true { |
| println(2, b) |
| panic("fail") |
| } |
| |
| s = ia[3].(string) |
| if s != "now is" { |
| println(3, s) |
| panic("fail") |
| } |
| b = ia[4].(bool) |
| if b != false { |
| println(4, b) |
| panic("fail") |
| } |
| |
| i8 = ia[5].(int8) |
| if i8 != 29 { |
| println(5, i8) |
| panic("fail") |
| } |
| i16 = ia[6].(int16) |
| if i16 != 994 { |
| println(6, i16) |
| panic("fail") |
| } |
| i32 = ia[7].(int32) |
| if i32 != 3434 { |
| println(7, i32) |
| panic("fail") |
| } |
| i64 = ia[8].(int64) |
| if i64 != 1234567 { |
| println(8, i64) |
| panic("fail") |
| } |
| |
| u8 = ia[9].(uint8) |
| if u8 != 12 { |
| println(5, u8) |
| panic("fail") |
| } |
| u16 = ia[10].(uint16) |
| if u16 != 799 { |
| println(6, u16) |
| panic("fail") |
| } |
| u32 = ia[11].(uint32) |
| if u32 != 4455 { |
| println(7, u32) |
| panic("fail") |
| } |
| u64 = ia[12].(uint64) |
| if u64 != 765432 { |
| println(8, u64) |
| panic("fail") |
| } |
| } |