mirror of
https://github.com/golang/go
synced 2024-11-02 09:03:03 +00:00
eb37b5b744
R=golang-dev, rsc CC=golang-dev https://golang.org/cl/5694065
184 lines
2.2 KiB
Go
184 lines
2.2 KiB
Go
// 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")
|
|
}
|
|
}
|