44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
source ~/.bash_profile 에서 저장이 안됩니다.
bad assignment 라고 뜨구요. 고패스 설정이 안되고 있습니다. 뭐가 문제인건가요?
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
godoc 실행 오류 문의
godoc을 실행 시키면 command not found 로 실행이 안되요.
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
작수가 뭐에요
rjkeiq;ieuvipqeiriqirueiwupvuicmxipxriuivuiururopqxmiuevuurqwpciuwvpuicuiuqiuwieurvueiucviuwvucuuvcuruvuucuvceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeewrercewcvv
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
Go의 IPC는 어떻게 접근해야 할까요?
강의에 나온 채널등은 대부분 Internal thread 즉 한 process 안의 다양한 thread들에게는 적용이 가능한데, process간에 적용을 하기 위해서는 어떻게 접근해야 한느지 궁금 합니다. Go에서 멀티 쓰레드 말고 멀티 프로세스개념을 다루는 부분을 추가해 주실 순 없을까요?
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
atomic.LoadInt64(&cnt) 결과가 이상 합니다.
package main import ( "fmt" "runtime" "sync" "sync/atomic" // _ "time" ) func init() { fmt.Println("Go Sync Advance study 4") } func onceTest() { fmt.Println("onceTest !!") } func main() { // 고루틴 동기화 고급 // 원자성 사용 -> 기능적으로 분할 불가능한 완전 보증된 일려의 조작 // 모든 조작이 완료 될 때까지 다른 프로세스 개입 불가 // sync/atomic 에서 원자적 연산자 제공 // https:// golang.org/pfg/sync/atomic 에서 계열 확인 가능 runtime.GOMAXPROCS(runtime.NumCPU()) var cnt int64 = 0 wg := sync.WaitGroup{} maxN := 5000 for i := 0; i < maxN; i++ { wg.Add(1) go func(n int) { //cnt++ atomic.AddInt64(&cnt, 1) wg.Done() }(i) } maxN = 2000 for i := 0; i < maxN; i++ { wg.Add(1) go func(n int) { //cnt-- atomic.AddInt64(&cnt, -1) wg.Done() }(i) } var finalCnt int64 = 0 finalCnt = atomic.LoadInt64(&cnt) wg.Wait() fmt.Println("finalCnt : ", finalCnt) fmt.Println("cnt : ", cnt) } 상기 코드를 실행하면 cnt 는 3000 항상 나오는데 finalCnt 는 3005같은 다른 값이 나오는데, 혹시 놓친 부분이 있을까요?
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
Panic이 발생하지 않는 이유가 있을까요?
channel 을 close close(ch) 후 ok4 가 false라고는 나오지만, log에 panic이 발생을 하는데, 강사님 화면에는 panic이 없어서 궁금합니다.
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
godoc을 입력하면... 명령어가 아니라고 뜹니다..
정확히는 'godoc'은 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라고 뜹니다.
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
구조체 출력 관련 질문
수고하십니다. 강의 반복해서 잘 듣고 있습니다. 질문드리니 바쁘시겠지만 답변 부탁 드립니다. 예제 1에서 kim, lee, park, cho의 구조체를 출력하면 &가 안붙고 출력이 되는데 구조체를 출력하면 &가 붙어서 출력이 되는게 아닌가요? 이상입니다.
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
용량 관련 질문 드립니다.
[3]번째 용량이 6이 되는게 궁금합니다. 지정한 용량이 넘을때는 2배가 되는데 계산대로 라면 2의 2배인 4가 넘으니깐 4의 두배인 8이 되지 않나요? 답변 부탁 드립니다. var s []intprintSlice(s)fmt.Println()s = append(s, 0) <- 1번printSlice(s)fmt.Println()s = append(s, 1) <- 2번printSlice(s)fmt.Println()s = append(s, 2, 3, 4) <- 3번printSlice(s)fmt.Println() func printSlice(s []int) { fmt.Printf("mem=%p len=%d cap=%d %v", s, len(s), cap(s), s)} mem=0x0 len=0 cap=0 [] mem=0xc000090000 len=1 cap=1 [0] mem=0xc00008c020 len=2 cap=2 [0 1] mem=0xc0000a0000 len=5 cap=6 [0 1 2 3 4]
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
왜 matchnode함수에서는 ParseMainNodes함수와 생김새가 다른가요?
func parseMainNodes(n *html.Node) bool { if n.DataAtom == atom.A && n.Parent != nil { return scrape.Attr(n.Parent, "class") == "row" } return false } func matchNode(n *html.Node) bool { return n.DataAtom == atom.A && scrape.Attr(n, "class") == "deco" } 왜 parseMainNodes 함수를 matchNode처럼 한 문장으로 표현하면 에러가 나고 왜 matchNode 함수를 parseMainNodes처럼 if문을 사용하면 에러가 나는지요 ㅠㅠ 하루종일 삽질하다가 matchNode가 문제인 걸 찾았는데 , 왜 matchNode를 parseMainNodes처럼 구현하면 안되는지요?
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
[재 질문2]구조체가 참조형 인가요
구조체가 참조형이라는게 알려주신 소스를 보고는 파악이 안됩니다. 슬라이스나 맵을 함수에 인자로 전달 하면 무조건 메모리 주소가 전달 되니 참조형 이라는 건 알겠는데 구조체는 변수나 배열처럼 값으로도 참조형으로도 전달 할 수 있으니 참조형도 가능하고 데이타 형도 가능하다고 해야 하지 않나 생각을 합니다만 제가 잘 못 이해하고 있는건가요 바쁘신 중에 죄송합니다만 답변 부탁 드립니다.
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
[재 질문]구조체가 참조형 인가요
알려주신 링크를 봐도 제가 잘 이해를 못하는건지 구조체 자체가 참조형이라는 정확한 설명이 없는거 같습니다만..혹시 mutable개체 라는게 참조형이라는 건지요? 강의 중에 구조체를 %v로 출력 해 보면 &가 붙어서 출력이 되기에 구조체 라고 들었습니다만...잘 이해가 안되는데 강사님의 생각을 알려주시면 감사하겠습니다.
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
프린트 문에관련 질문입니다.
안녕하세요 강의 반복해서 잘 듣고 있습니다.아래의 주석 처리한 부분의 질문입니다.그냥 포인트 변수가 역 참조 하는 값을 프린트 문이 아닌 곳에서는 가능한데프린트 문 내에 쓰면 에러가 발생하는 이유가 잘 이해가 안됩니다.알기 쉽게 설명좀 부탁 드리겠습니다.func main() { i := 7 p := &i *p++ fmt.Println(*p) // fmt.Println(*p++) 에러}결과8
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
슬라이스 선언시 초기값 관련
var slice1 []intslice2 := []int{}fmt.Println(slice1)fmt.Println(slice2)if slice1 == nil { fmt.Println("slice1 is nil")}if slice2 == nil { fmt.Println("slice2 is nil")}실행결과[] [] slice1 is nil질문slice2는 널이 아닌 무슨 값이 들어가 있는건지요?답변 부탁 드리겠습니다.
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
recover() 은 실행되는 순간 에러 하나를 꺼내고 에러를 기록에서 지우나요?
if s := recover(); s != nil { fmt.Println("Error message : ", s) } 은 Error message : runtime error : index out of range [3] with length 3 이 출력되지만 if recover() != nil { fmt.Println("Error message : ", recover()) } 은 Error message : <nil> 이 출력되네요 recover() 은 실행되는 순간 에러 하나를 꺼내고 에러를 기록에서 지우나요? 그래서 s := recover() 을 하면 되지만 recover() != nil 일 시 recover() 이라고 하면 안되는건가요? 아니라면 왜 안 되는 것인지 궁금합니다.
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
go언어는 컴파일 언어임에도 동적 언어의 특성을 가지고 있는건가요?
go는 컴파일 언어로 기계어 번역 후 실행하지만 동적 언어의 특성도 가지고 있다고 알고 있는데, 맞나요? 맞다면 어떻게 타입을 표시하지 않는 짧은 선언을 컴파일할 때 알컴퓨터가 알아먹는걸까요?
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
항상 코딩할 때 시스템 전체 cpu를 사용하는 것이 좋나요?
궁금합니다.
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
형변환 및 기타 질문 드립니다.
수고하십니다. 강의 열심히 따라 하고 있습니다. 2가지 문의를 드리고자 합니다. 1. 형변환 c와f는 같은 형식의 형변환인데 c가 안되는 이유를 찾아보면 단지 암묵적 형변환 ~~라고 나오는데 Go는 upcasting은 안되는가요? c := int(12.34) // NGd := 12.34e := int(d) // OKf := float64(100) // OKg := 100 h := float32(g)2. build, install의 차이점을 잘 모르겠습니다.섹션1 강의는 보았지만 둘다 os에 맞는 실행파일이 생성이 되는거 같은데무슨 차이점이 있는가요3. github.com , golang.org위의 파일은 파일을 생성하면 깃허브 같은데서 자동으로 패키지 등을 가지고오며 실제로 로그에서 go get 명령으로 패키지를 가지고 오는걸 보여 주셨습니다만 각각의 파일은 실제 어느곳에서 무슨 파일을 가지고 오는지 궁금합니다.그리고 삭제 해도 된다고 하셨는데 삭제 하면 생성한 파일이 참조하는 패키지가있어서 에러가 나지 않는가요?.
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
예제 4 및 로그 처리 관련 질문 드립니다.
수고하십니다. 예제 4의 PowError의 리시버에 관련 질문 드립니다. 1. go에서는 implements같은 키워드를 안쓰고 메소드 형태만 같으면 인터페이스의 메소드를 구현하는 거라는건 알겠는데(e PowError)리시버 형태도 가능 한건가요? 2. 에러가 발생 하면 자동으로 Error 리시버 메소드가 실행 되는 건가요 3. Fatal 이라는 기능은 치명적인 에러가 발생해도 일단 시스템은 정상적으로 돌아가게 할 수 있는거 같은데 그럼 에러메세지를 보고 처리를 해야 할거 같은데 3.1 에러메세지를 로그 파일 같은데 쓸수 있는 기능이 있는지요? 3.2 에러메세지를 로그 파일로 처리가 가능하다면 파일이 일정 사이즈가 되면 압축을 하고 새로운 파일에 로그를 쓸수 있는 그런 기능은 있는가요?
- 미해결쉽고 빠르게 끝내는 GO언어 프로그래밍 핵심 기초 입문 과정
인터페이스 2번 예제에 관한 질문
for문으로 인덱스를 가지고 값을 가지고 와서 메소드를 호출하는 것과 값을 가지고 메소드를 호출하는 거의 차이점을 잘 모르겠습니다. 둘다 그냥 각각의 메소드를 호출 하는것 처럼 보이는것 같은데 잘 이해가 안되네요 수고스럽지만 알기 쉽게 답변 부탁 드리겠습니다.