|  | // 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") | 
|  | } | 
|  | } |