CocoaPods trunk is moving to be read-only. Read more on the blog, there are 19 months to go.

GoSwift 1.1.0

GoSwift 1.1.0

TestsTested
LangLanguage SwiftSwift
License Custom
ReleasedLast Release Sep 2015
SPMSupports SPM

Maintained by Josh Baker.



GoSwift 1.1.0

 GoSwift - Go Goodies for Swift

Bring some of the more powerful features of Go to your iOS / Swift project such as channels, goroutines, and defers.

Built for Swift 2.0 - For Swift 1.2 support use v0.1.4 or earlier.

Features

  • Goroutines
  • Defer
  • Panic, Recover
  • Channels
    • Buffered Channels
    • Select, Case, Default
    • Closing

  • Sync Package
    • Mutex, Cond, Once, WaitGroup

Example

Note that the following example and all of the examples in the examples directory originated from http://gobyexample.com and Mark McGranaghan

Go

package main

import "fmt"

func main() {
    jobs := make(chan int, 5)
    done := make(chan bool)

    go func() {
        for {
            j, more := <-jobs
            if more {
                fmt.Println("received job", j)
            } else {
                fmt.Println("received all jobs")
                done <- true
                return
            }
        }
    }()

    for j := 1; j <= 3; j++ {
        jobs <- j
        fmt.Println("sent job", j)
    }
    close(jobs)
    fmt.Println("sent all jobs")

    <-done
}

Swift

func main() {
    var jobs = Chan<Int>(5)
    var done = Chan<Bool>()

    go {
        for ;; {
            var (j, more) = <?jobs
            if more {
                println("received job \(j!)")
            } else {
                println("received all jobs")
                done <- true
                return
            }
        }
    }

    for var j = 1; j <= 3; j++ {
        jobs <- j
        println("sent job \(j)")
    }
    close(jobs)
    println("sent all jobs")

    <-done
}

Run an Example

Each example has a .swift and .go file that contain the same logic.

./run.sh examples/goroutines.swift
./run.sh examples/goroutines.go

Installation (iOS and OS X)

Manually

Copy the GoSwift\go.swift file into your project.

There is no need for import GoSwift when manually installing.

Contact

Josh Baker @tidwall

License

The GoSwift source code available under the MIT License.

The Go source code in the examples directory is copyright Mark McGranaghan and licensed under a Creative Commons Attribution 3.0 Unported License.

The Swift version of the example code is by Josh Baker