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