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