go complit1 源码

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

golang complit1 代码

文件路径:/test/complit1.go

// errorcheck

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

// Verify that illegal composite literals are detected.
// Does not compile.

package main

var m map[int][3]int

func f() [3]int

func fp() *[3]int

var mp map[int]*[3]int

var (
	_ = [3]int{1, 2, 3}[:] // ERROR "slice of unaddressable value"
	_ = m[0][:]            // ERROR "slice of unaddressable value"
	_ = f()[:]             // ERROR "slice of unaddressable value"

	_ = 301[:]  // ERROR "cannot slice|attempt to slice object that is not"
	_ = 3.1[:]  // ERROR "cannot slice|attempt to slice object that is not"
	_ = true[:] // ERROR "cannot slice|attempt to slice object that is not"

	// these are okay because they are slicing a pointer to an array
	_ = (&[3]int{1, 2, 3})[:]
	_ = mp[0][:]
	_ = fp()[:]
)

type T struct {
	i    int
	f    float64
	s    string
	next *T
}

type TP *T
type Ti int

var (
	_ = &T{0, 0, "", nil}               // ok
	_ = &T{i: 0, f: 0, s: "", next: {}} // ERROR "missing type in composite literal|omit types within composite literal"
	_ = &T{0, 0, "", {}}                // ERROR "missing type in composite literal|omit types within composite literal"
	_ = TP{i: 0, f: 0, s: ""}           // ERROR "invalid composite literal type TP"
	_ = &Ti{}                           // ERROR "invalid composite literal type Ti|expected.*type for composite literal"
)

type M map[T]T

var (
	_ = M{{i: 1}: {i: 2}}
	_ = M{T{i: 1}: {i: 2}}
	_ = M{{i: 1}: T{i: 2}}
	_ = M{T{i: 1}: T{i: 2}}
)

type S struct{ s [1]*M1 }
type M1 map[S]int

var _ = M1{{s: [1]*M1{&M1{{}: 1}}}: 2}

相关信息

go 源码目录

相关文章

go 235 源码

go 64bit 源码

go alg 源码

go alias 源码

go alias1 源码

go alias2 源码

go alias3 源码

go align 源码

go append 源码

go append1 源码

0  赞