Source file test/typeparam/issue48337a.dir/a.go

     1  // Copyright 2021 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 a
     6  
     7  import (
     8  	"fmt"
     9  	"sync"
    10  )
    11  
    12  type WrapperWithLock[T any] interface {
    13  	PrintWithLock()
    14  }
    15  
    16  func NewWrapperWithLock[T any](value T) WrapperWithLock[T] {
    17  	return &wrapperWithLock[T]{
    18  		Object: value,
    19  	}
    20  }
    21  
    22  type wrapperWithLock[T any] struct {
    23  	Lock   sync.Mutex
    24  	Object T
    25  }
    26  
    27  func (w *wrapperWithLock[T]) PrintWithLock() {
    28  	w.Lock.Lock()
    29  	defer w.Lock.Unlock()
    30  
    31  	fmt.Println(w.Object)
    32  }
    33  

View as plain text