2013-12-10 6 views
1

나는 golang의 AI 게임 엔진에서 작업하고 있으며 가능한 한 빨리 액세스 할 수 있도록 미리 계산 된 일부 데이터를 저장해야합니다. 데이터의Go (golang)에 구조화 된 데이터 임베드

구조는 다음과 같이이다 :

{ 
    'type1': { 
     0: { 
      0: { 1, 2, 3, 4, 5, 6, 7 }, 
      1: { 2, 3, 4 }, 
     }, 
     1: { 
      0: { 2, 3, 4, 5, 6 }, 
     }, 
    }, 
    "type2": { 
     0: { 
      { 63, 23, 42, 12 }, 
     }, 
    }, 
} 

컴파일 된 바이너리에이 데이터를 포함하는 가장 좋은 방법은 무엇입니까? 데이터는 변경되지 않으며 게임의 규칙을 나타냅니다.

나는 힙에 맵을 할당하는 함수를 만들 수 있다는 것을 알고 있지만 데이터가있는 곳에서 직접 액세스하는 것이 더 자연 스럽다고 생각합니다.

답변

3

데이터를 퍼가는 것은 꽤 쉽습니다. 패키지 범위에 변수를 선언하려면 패키지 범위에서 선언

var someVar = map[string][][][]uint8 { 
    'type1': [][][]uint8 { 
     0: [][]uint8 { 
      0: []uint8 { 1, 2, 3, 4, 5, 6, 7, }, 
     }, 
    }, 
} 

적어도 패키지 범위의 기능,가 액세스 할 수 있습니다.

이 마크 업에 관한 유일한 귀찮은 사실은 처음에는 전체 구조의 형식을 선언해야한다는 것입니다. 그런 다음 구조의 첫 번째 부분을 "팝업"하여 계층 구조에 깊이 들어가야합니다. 예 :

여기서 map [string] uint8은 문자열 키와 uint8 값이있는지도를 선언합니다. map [string] [] uint8은 문자열 키와 uint8 값의 배열이있는지도를 선언합니다.

구조가 깊어지면 형식 정의의 시작 부분이 튀어 나옵니다.

var someVar map[string][][][]uint8 { 
        0: [][][]uint8 { 
         0: [][]uint8 { 
         0: []uint8 { 
          1, 2, 3, 4, 5, 
         }, 
         }, 
        }, 
} 

이상한 들여 쓰기

+1

전역 범위 → 패키지 범위 주셔서 감사합니다 @tomwilde – thwd

+0

을 튀어 있었는지 설명하기위한 것입니다; 게시물을 업데이트했습니다. – frodeborli

+0

지도를 만들 때 실제로 유형을 생략 할 수 있습니다. [이 예를 드십시오] (http://play.golang.org/p/f0ngH5dd41)를 참조하십시오. – nemo

관련 문제