@ 17. 1 ~ 18/Go 랭
-
GO RWMutex vs Mutex@ 17. 1 ~ 18/Go 랭 2020. 7. 16. 00:15
var Password = secret{password: "myPassword"} type secret struct { RWM sync.RWMutex M sync.Mutex password string } func Change(c *secret, pass string) { c.RWM.Lock() fmt.Println("LChange") time.Sleep(10 * time.Second) c.password = pass c.RWM.Unlock() } func show(c *secret) string { c.RWM.RLock() fmt.Println("show") time.Sleep(3 * time.Second) defer c.RWM.RUnlock() return c.password } func showWi..
-
-
GO 가변인자@ 17. 1 ~ 18/Go 랭 2020. 7. 4. 23:17
Go언어는 값을 넘기기 때문에 그 값들을 슬라이스에 담아서 넘기면 되지 않을까요 func f(w io.Writer, nums []int){ } func main(){ ... f(w, []int{x,y,z}) } //아래 처럼 가변인자로 한다면 func WriteTo(w io.Writer, lines... string) (n int64, err error){ } //이와 같이 lines를 가변인자로 변경하여도 lines는 슬라이스가 됩니다 //호출할때 원래는 슬라이스를 넘겨주어야 했겠지만 이제는 나열하는 것만으로도 가능하다 //WriteTo(w, "hello", "world", "Go") //그럼 이미 슬라이스로 갖고 있는 자료라면? //그냥 슬라이스 하나를 넘기면 그 슬라이스 하나를 담고 있는 슬라이스로..
-
Go 슬라이스@ 17. 1 ~ 18/Go 랭 2020. 7. 4. 13:23
자료구조 배열과 슬라이스 슬라이스는 연속된 메모리 공간. 순차적으로 이용하는 자료구조 배열이 직접사용되는 경우도 있지만 주로 슬라이스를 이요하여 간접적으로 배열을 이용하는 경우가 많다 1. 배열 func Exampe_Array(){ fruits :=[3]string{"사과", "바나나", "토마토"} for _, fruit := range fruits{ fmt.Println("%s는 맛있다", fruit) } //output //사과는 맛있다 //바나나는 맛있다 //토마토는 맛있다 } range 키워드에서 첫번째 제어변수는 0,1,2... 인덱스 두번쨰 제어변수는 각각의 값들이 순서대로 받아진다 컴파일러가 배열의 수를 알아내어서 넣게 만들고 싶다면 fruits := [...]string{"사과", "바나..