D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
3206095
/
root
/
opt
/
golang
/
1.22.0
/
test
/
typeparam
/
Filename :
issue50993.go
back
Copy
// compile -d=checkptr // Copyright 2022 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. package main import ( "sync/atomic" "unsafe" ) type Node[T any] struct { Next *Node[T] // Prev *Node[T] } func LoadPointer[T any](addr **T) (val *T) { return (*T)( atomic.LoadPointer( (*unsafe.Pointer)(unsafe.Pointer(addr)), )) } func (q *Node[T]) Pop() { var tail, head *Node[T] if head == LoadPointer(&tail) { } } func main() { ch := Node[uint64]{} ch.Pop() }