구조체가 참조형 인가요
188
작성한 질문수 78
참조형 인 경우 메소드에 포인터 변수를 넘기지 않아도 원본을 바꿀수 있는걸로 배운거 같은데 구조체는 좀 틀린가요?
리시버 메소드가 아닌 일반 메소드의 파라메터로 포인터변수가 아닌 일반 구조체를 넘겨서 구조체 안의 멤버필드의 값을 변경해도 원본은 변경되지 않는거 같아서 질문 드립니다.
답변 1
0
네 기본적으로 mutable 형 입니다.(값 변경 가능)
아래 설명 추가로 가져왔습니다.
참조 url : http://golang.site/go/article/16-Go-%EA%B5%AC%EC%A1%B0%EC%B2%B4-struct
|
1
2
|
p := new(person)p.name = "Lee" // p가 포인터라도 . 을 사용한다 |
Go에서 struct는 기본적으로 mutable 개체로서 필드값이 변화할 경우 (별도로 새 개체를 만들지 않고) 해당 개체 메모리에서 직접 변경된다. 하지만, struct 개체를 다른 함수의 파라미터로 넘긴다면, Pass by Value에 따라 객체를 복사해서 전달하게 된다. 그래서 만약 Pass by Reference로 struct를 전달하고자 한다면, struct의 포인터를 전달해야 한다.
고 인터페이스 관련
0
69
2
Join함수 사용이유가 궁금합니다
0
54
1
vscode 설정
0
126
2
arm64
0
202
2
undefined 에러 : UndeclaredImportedName
0
343
1
godoc 에러 관련
0
207
1
package is not in std 오류
0
986
1
맵 예제 코드가 바이러스 검사에 걸려요
0
234
1
for 반복문에서 break와 continue 차이점
0
224
1
후치연산 관련 질문입니다.
0
197
1
package관리에 질문이 있습니다.
0
282
1
go channel 에제에서 질문이 있습니다.
0
194
1
golang 질문
0
311
1
재귀 함수 관련하여 질문이 있습니다.
0
347
1
atom 서비스 종료 관련
0
403
1
vscode 환경설정 업데이트 부탁드립니다
1
405
2
waitGroup.Done을 지연 시키는 방식
0
450
1
첫 번째 예제 질문있습니다.
0
264
1
2개씩 체크가 되는 이유가 궁금합니다.
0
328
1
go 표준 코드 컨벤션이 있나요?
0
826
1
slice에서 make 궁금한 게 있습니다.
1
262
1
import 관리는 어떻게 하나요?
0
318
1
개발환경설정 질문드립니다.
0
488
1
이것도 closure인가요?
0
240
1





