Go에 OSX 애플리케이션 #golang 쓰기
개시하다
제목은 낚시.미안합니다.
애플 대신 자바스크립트를 쓸 수 있을 것 같다.
GopherJS+Nashorn+JavaFX를 탈 때처럼 간단한 샘플을 이동해 봤다.
창밖으로 나가다
당분간 윈도를 꺼내 보세요.
위 Qita의 JXA 기사를 참조하여 JavaScript 코드를 Go 언어로 무심코 변환했습니다.
진짜 하면 (아무도 안 하겠지만) 틀을 만드는 게 좋을 것 같은데 일단
interface{}
부터 쓰자.$
는 변수 이름에 사용할 수 없기 때문에__
로 대체합니다.여전히 고(故) 소스에
js
와 objC
다른 언어의 이름이 나와 역겹다.registerSubclass
근처에 모골이 송연해요.windowWillClose:
를 windowWillClose
라고 쓰고 잠시 빠져들었다.win.center
이렇게 쓰면 창 한가운데 수수께끼 같은 방법도 잘 어울린다.호출 함수도, 필드에 수치를 입력하는 것도 아니고, 단지 방문 필드는 불가사의하다.
win.center()
이런 게 더 잘 알아요.sample.go
package main
import (
"github.com/gopherjs/gopherjs/js"
)
func main() {
objC := js.Global.Get("ObjC")
__ := js.Global.Get("$")
objC.Call("import", "Cocoa")
var app js.Object
objC.Call("registerSubclass", map[string]interface{}{
"name": "WinDelegate",
"superclass": "NSObject",
"protocols": []string{"NSWindowDelegate"},
"methods": map[string]interface{}{
"windowWillClose:": map[string]interface{}{
"types": []interface{}{"void", []interface{}{"id"}},
"implementation": func(notification js.Object) js.Object {
return app.Call("terminate", 0)
},
},
},
})
styleMask := __.Get("NSTitledWindowMask").Int() |
__.Get("NSClosableWindowMask").Int() |
__.Get("NSMiniaturizableWindowMask").Int()
win := __.Get("NSWindow").Get("alloc").Call("initWithContentRectStyleMaskBackingDefer",
__.Call("NSMakeRect", 0, 0, 400, 400),
styleMask,
__.Get("NSBackingStoreBuffered"),
false,
)
win.Get("center")
win.Set("title", "Hello Cocoa")
win.Call("makeKeyAndOrderFront", win)
win.Set("delegate", __.Get("WinDelegate").Get("alloc").Get("init"))
app = __.Get("NSApplication").Get("sharedApplication")
app.Call("setActivationPolicy", __.Get("NSApplicationActivationPolicyRegular"))
app.Call("activateIgnoringOtherApps", true)
app.Call("run")
}
시운전.$ gopherjs build sample.go && osascript -l JavaScript sample.js
Nashorn을 할 때보다 잘못된 정보가 쉽게 이해되기 때문에 물 필요가 없다고 생각했다go build
.감상
Nashorn에 있을 때 전 세계 대상의 대응 덕분에 gopehrjs는 얻지 못했다.
고퍼군의 3D 대상을 이렇게 꾸르륵꾸르륵 만들 수 있을 정도로 만들어야 한다고 생각합니다.
아무도 필요 없는 기사일 거라고 생각해요.
감사합니다.
Reference
이 문제에 관하여(Go에 OSX 애플리케이션 #golang 쓰기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tenntenn/items/4b9587120176c2d4b454텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)