github.com/yukk001/go1.10.8@v0.0.0-20190813125351-6df2d3982e20/misc/cgo/testplugin/src/plugin1/plugin1.go (about)

     1  // Copyright 2016 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package main
     6  
     7  // // No C code required.
     8  import "C"
     9  
    10  import (
    11  	"common"
    12  	"reflect"
    13  )
    14  
    15  func F() int {
    16  	_ = make([]byte, 1<<21) // trigger stack unwind, Issue #18190.
    17  	return 3
    18  }
    19  
    20  func ReadCommonX() int {
    21  	return common.X
    22  }
    23  
    24  var Seven int
    25  
    26  func call(fn func()) {
    27  	fn()
    28  }
    29  
    30  func g() {
    31  	common.X *= Seven
    32  }
    33  
    34  func init() {
    35  	Seven = 7
    36  	call(g)
    37  }
    38  
    39  type sameNameReusedInPlugins struct {
    40  	X string
    41  }
    42  
    43  type sameNameHolder struct {
    44  	F *sameNameReusedInPlugins
    45  }
    46  
    47  func UnexportedNameReuse() {
    48  	h := sameNameHolder{}
    49  	v := reflect.ValueOf(&h).Elem().Field(0)
    50  	newval := reflect.New(v.Type().Elem())
    51  	v.Set(newval)
    52  }
    53  
    54  func main() {
    55  	panic("plugin1.main called")
    56  }