크롤러 만들기 (1) - 수정 정보
크롤러 만들기 (1) - 수정본문
어제 올렸던 소스코드에서 일부분 수정했습니다.
struct 안에 struct를 넣고
상위 struct를 초기화하는 방식으로 했는데
이렇게 하면
NewSettingURL 할때도 초기화되고
NewSettingPost 할때도 초기화되고 그래서 낭비라고 생각이 들어서
따로 다 나누었습니다.
이제 각각 New 함수를 쓸 때 각각의 구조체가 초기화됩니다.
전 코드는 New 함수를 쓸 때마다 하나의 구조체가 초기화됐습니다
package Setting import "errors" // URL 기본적인 크롤러 세팅 값. type URL struct { URL string PageNumber string } // Builder 그누보드 빌더 값 type Builder struct { Builder string } // Post 게시글 세팅 값 type Post struct { PostTitle bool // 게시물 제목 PostMember bool // 게시물 작성자 PostMemberIcon bool // 게시물 작성 아이콘 PostDate bool // 게시물 작성 날짜 PostHit bool // 게시물 조회 수 PostComment bool // 게시물 댓글 수 PostLink bool // 게시물 링크 PostContent bool // 게시물 내용 PostGood bool // 게시물 추천 수 PostNotGood bool // 게시물 비추천 수 } // NewSettingURL 함수는 URL 구조체를 초기화하는 함수 func NewSettingURL(u string, PageNumber string) (*URL, error) { var s URL // URL이 유효한 지 체크 urlCheck := PageCheck(u) if !urlCheck { // 유효하지 않을 경우 return &s, errors.New("URL이 유효하지 않거나, URL Status Code가 200번대가 아닙니다.") } s = URL{ URL: u, PageNumber: PageNumber, } return &s, nil } // NewSettingBuilder 함수는 Builder 구조체를 초기화하는 함수 func NewSettingBuilder(b string) *Builder { var s Builder if b != "Gnu" { b = "Gnu" } s = Builder{Builder: b} return &s } // NewSettingPost 함수는 Post 구조체를 초기화하는 함수 func NewSettingPost(p map[string]bool) *Post { var s Post s = Post{ PostTitle: p["Title"], PostMember: p["Member"], PostMemberIcon: p["MemberIcon"], PostDate: p["Date"], PostHit: p["Hit"], PostComment: p["Comment"], PostLink: p["Link"], PostContent: p["Content"], PostGood: p["Good"], PostNotGood: p["NotGood"], } return &s }
이제 다음은 NewSettingPost에서 데이터 검증하는 부분이네요.
// NewSettingPost 함수는 Post 구조체를 초기화하는 함수 func NewSettingPost(p map[string]bool) *Post { var s Post for key, val := range p { if !val { // 값이 없을 경우 p[key] = false // 기본값 false } } s = Post{ PostTitle: p["Title"], PostMember: p["Member"], PostMemberIcon: p["MemberIcon"], PostDate: p["Date"], PostHit: p["Hit"], PostComment: p["Comment"], PostLink: p["Link"], PostContent: p["Content"], PostGood: p["Good"], PostNotGood: p["NotGood"], } return &s }
p라는 map 타입에서 key와 value 값을 각각 찾는 코드를 작성해서
만약 value 값이 없을 경우에는 key와 대응하는 값에 false 를 넣는 코드입니다.
추천
0
0
댓글 0개