go conversions0 源码

  • 2022-07-15
  • 浏览 (986)

golang conversions0 代码

文件路径:/src/cmd/compile/internal/types2/testdata/check/conversions0.go

// Copyright 2012 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.

// conversions

package conversions

import "unsafe"

// argument count
var (
	_ = int() /* ERROR "missing argument" */
	_ = int(1, 2 /* ERROR "too many arguments" */ )
)

// numeric constant conversions are in const1.src.

func string_conversions() {
	const A = string(65)
	assert(A == "A")
	const E = string(-1)
	assert(E == "\uFFFD")
	assert(E == string(1234567890))

	type myint int
	assert(A == string(myint(65)))

	type mystring string
	const _ mystring = mystring("foo")

	const _ = string(true /* ERROR "cannot convert" */ )
	const _ = string(1.2 /* ERROR "cannot convert" */ )
	const _ = string(nil /* ERROR "cannot convert" */ )

	// issues 11357, 11353: argument must be of integer type
	_ = string(0.0 /* ERROR "cannot convert" */ )
	_ = string(0i /* ERROR "cannot convert" */ )
	_ = string(1 /* ERROR "cannot convert" */ + 2i)
}

func interface_conversions() {
	type E interface{}

	type I1 interface{
		m1()
	}

	type I2 interface{
		m1()
		m2(x int)
	}

	type I3 interface{
		m1()
		m2() int
	}

	var e E
	var i1 I1
	var i2 I2
	var i3 I3

	_ = E(0)
	_ = E(nil)
	_ = E(e)
	_ = E(i1)
	_ = E(i2)

	_ = I1(0 /* ERROR "cannot convert" */ )
	_ = I1(nil)
	_ = I1(i1)
	_ = I1(e /* ERROR "cannot convert" */ )
	_ = I1(i2)

	_ = I2(nil)
	_ = I2(i1 /* ERROR "cannot convert" */ )
	_ = I2(i2)
	_ = I2(i3 /* ERROR "cannot convert" */ )

	_ = I3(nil)
	_ = I3(i1 /* ERROR "cannot convert" */ )
	_ = I3(i2 /* ERROR "cannot convert" */ )
	_ = I3(i3)

	// TODO(gri) add more tests, improve error message
}

func issue6326() {
	type T unsafe.Pointer
	var x T
	_ = uintptr(x) // see issue 6326
}

相关信息

go 源码目录

相关文章

go blank 源码

go builtins0 源码

go builtins1 源码

go chans 源码

go compliterals 源码

go const0 源码

go const1 源码

go constdecl 源码

go conversions1 源码

go cycles0 源码

0  赞